import base64

import pickle

from django_redis import get_redis_connection


def merge_cookie_redis_cart(request,user,response):
    #获取cookie字符串
    cookie_cart = request.COOKIES.get("cart")

    #如果cookie的购物车数据为空，不需要合并，直接返回
    if not cookie_cart:
        return  response

    #字符串转化为字典
    if cookie_cart:
        cookie_dict=pickle.loads(base64.b64decode(cookie_cart.encode()))

    #获取redis对象
    redis_conn = get_redis_connection("cart")

    #获取所有的购物车信息
    for sku_id,value in cookie_dict.items():
        #将数据设置到redis中
        redis_conn.hset("cart_%s" %user.id,sku_id,value["count"])
        if value['selected']:
            redis_conn.sadd("cart_selcted_%s" %user.id,sku_id)

    #合并之后，将返回体的cookie删除
    response.delete_cookie("cart")

    return response
